package cn.school.student.entity;

import cn.school.common.BaseVO;
import cn.school.common.utils.SysUserUtils;
import cn.school.student.common.converter.*;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;
import java.util.List;

/**
 * (TStudentInfo)实体类
 *
 * @author yuanyuan
 * @since 2022-08-22 08:44:24
 */
@Data
@TableName("t_student_info")
public class StudentInfo extends BaseVO {

    private static final long serialVersionUID = 242531443435313442L;

    //id
    @TableId
    @ApiModelProperty(value = "id",hidden = true)
    @ExcelProperty("学生ID")
    private Long id;

    //学号
    @ApiModelProperty(value = "学号",required = true)
    private String studentId;

    //名字
    @ExcelProperty("姓名")
    @ApiModelProperty(value = "名字",required = true)
    private String name;

    //曾用名
//    @ExcelProperty("曾用名")
    @ApiModelProperty(value = "曾用名")
    private String oldName;

    @ApiModelProperty(value = "学生照片")
    private String studentPicture;

    //籍贯
    @ExcelProperty("籍贯")
    @ApiModelProperty(value = "籍贯",required = true)
    private String nativePlace;

    //性别
    @ExcelProperty(value = "性别",converter= GenderConverter.class)
    @ApiModelProperty(value = "性别(词典：t_sys_user_sex)",required = true)
    private String gender;

    @ExcelProperty(value = "手机号")
    @ApiModelProperty(value = "手机号",required = true)
    private String phone;

    //民族
    @ExcelProperty(value = "民族")
    @ApiModelProperty(value = "民族(词典：nation)",required = true)
    private String nation;

    //政治面貌
    @ExcelProperty(value = "政治面貌",converter = PoliticalAffiliationConverter.class)
    @ApiModelProperty(value = "政治面貌(词典：political_affiliation)",required = true)
    private String politicalAffiliation;

    @ExcelProperty("班级ID")
    @ApiModelProperty(value = "班级ID",required = true)
    private Long classId;
    //班级
    @ExcelProperty("班级")
    @ApiModelProperty(value = "班级",required = true)
    private String className;

    //班内编号
    @ExcelProperty("班内编号")
    @ApiModelProperty(value = "班内编号",required = true)
    private String numberInClass;

    //学生类别
    @ExcelProperty(value = "学生类别",converter = StudentTypeConverter.class)
    @ApiModelProperty(value = "学生类别(词典：student_type)")
    private String studentType;

    //原毕业学校
    @ExcelProperty("原毕业学校")
    @ApiModelProperty(value = "原毕业学校")
    private String originalGraduationSchool;

    //港澳台侨外
    @ExcelProperty(value = "港澳台侨外",converter = IsAlienConverter.class)
    @ApiModelProperty(value = "港澳台侨外(词典：is_alien)")
    private String isAlien;

    //入学日期
    @ExcelProperty("入学日期")
    @ApiModelProperty(value = "入学日期",required = true)
    private String entranceDate;

    //户籍省县
    @ExcelProperty("户籍省县")
    @ApiModelProperty(value = "户籍省县")
    private String provinceCounty;

    //户籍镇/街
    @ExcelProperty("户籍镇/街")
    @ApiModelProperty(value = "户籍镇/街")
    private String townStreet;

    //证件号
    @ExcelProperty("证件号")
    @ApiModelProperty(value = "证件号",required = true)
    private String certificateId;

    //证件类型
    @ExcelProperty(value = "证件类型",converter = CertificateTypeConverter.class)
    @ApiModelProperty(value = "证件类型(词典：certificate_type)",required = true)
    private String certificateType;

    //一卡通卡号
    @ExcelProperty("一卡通卡号")
    @ApiModelProperty(value = "一卡通卡号")
    private String tUnionNumber;

    //实际居住地址
    @ExcelProperty("实际居住地址")
    @ApiModelProperty(value = "实际居住地址")
    private String residentialAddress;

    //家庭邮编
    @ExcelProperty("家庭邮编")
    @ApiModelProperty(value = "家庭邮编")
    private String familyPost;

    //家庭电话
    @ExcelProperty("家庭电话")
    @ApiModelProperty(value = "家庭电话")
    private String familyPhone;

    //特长爱好
    @ExcelProperty("特长爱好")
    @ApiModelProperty(value = "特长爱好")
    private String specialtyHobby;

    //获奖情况
    @ExcelProperty("获奖情况")
    @ApiModelProperty(value = "获奖情况")
    private String awardInfo;

    //监护人姓名
    @ExcelProperty("监护人姓名")
    @ApiModelProperty(value = "监护人姓名",required = true)
    private String guardianName;

    //监护人与学生关系
    @ExcelProperty("监护人与学生关系")
    @ApiModelProperty(value = "监护人与学生关系",required = true)
    private String relationOfGuardian;

    //监护人联系电话
    @ExcelProperty("监护人联系电话")
    @ApiModelProperty(value = "监护人联系电话",required = true)
    private String guardianPhoneNumber;

    @ApiModelProperty(value = "监护人密码")
    private String guardianPassword;

    private String status;

    private String password;

    @ApiModelProperty(value = "学生openid",required = true)
    private String studentOpenid;

    //学生照片修改时间
    private Date modifyPicTime;

    @ApiModelProperty(value = "监护人openid",required = true)
    private String guardianOpenid;

    @ApiModelProperty(value = "监护人微信公众号openid",required = true)
    private String guardianOfficialOpenId;

    @ApiModelProperty(value = "学生费用关系",required = true)
    @TableField(exist = false)
    private List<String> scRelationList;

    @TableField(exist = false)
    private String levelName;

    @TableField(exist = false)
    private String berthId;

    @TableField(exist = false)
    private String locationId;

    @TableField(exist = false)
    private String berthCode;

    @ApiModelProperty(value = "JG学生注册id",required = true)
    private String stRegistrationId;

    @ApiModelProperty(value = "JG家长注册id",required = true)
    private String guRegistrationId;

    @TableField("gender")
    private String sex;

    /**
     * 1-启用 0-停用
     */
    private String enabled;
    /**
     * 默认租户为当前登录人的租户
     */
    private String tenantId = SysUserUtils.getSysUser().getTenantId();

    // 腾讯云服务器图片路径
    private String tencentImagePath;

}
